home *** CD-ROM | disk | FTP | other *** search
-
- -- -----------------------------------------------------------------
- -- Init
- -- -----------------------------------------------------------------
- local function prog_init()
- initModels()
- sound_playMusic("music/rybky10.ogg")
- local pokus = getRestartCount()
-
-
- -- -------------------------------------------------------------
- local function prog_init_room()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- room.uvod = 1
- room.tahy = random(500) + 500
- room.opldovi = 0
-
- return function()
- if no_dialog() and isReady(small) and isReady(big) then
- if room.uvod == 1 then
- room.uvod = 0
- switch(pokus){
- [1] = function()
- pom1 = random(2) + 1
- end,
- [2] = function()
- pom1 = random(2) + 1
- end,
- default = function()
- pom1 = random(3)
- end,
- }
- adddel(10 + random(20))
- switch(pom1){
- [1] = function()
- if random(2) == 0 then
- addm(0, "puc-m-koukej")
- else
- addv(0, "puc-v-podivej")
- end
- end,
- [2] = function()
- addv(0, "puc-v-videl")
- addm(10, "puc-m-oblicej")
- end,
- }
- elseif room.opldovi == 0 and dist(small, pld) < 4 and look_at(small, pld) and random(100) < 1 then
- room.opldovi = 1
- switch(random(3)){
- [0] = function()
- addm(10, "puc-m-pld0")
- end,
- [1] = function()
- addm(10, "puc-m-pld1")
- end,
- [2] = function()
- addm(10, "puc-m-hele")
- end,
- }
- addm(random(30) + 5, "puc-m-slizka")
- planSet(pld, "smutny", 60 + random(60))
- pld:planDialog(3, "puc-x-pldik")
- elseif room.tahy == 1 and big.dir ~= dir_no then
- addv(10, "puc-v-fuska"..random(2))
- room.tahy = random(500) + 500
- elseif prvni.hotovo == 1 then
- addv(5, "puc-v-fuska2")
- addm(random(10) + 3, "puc-m-stalo")
- addm(random(20) + 5, "puc-m-obraz")
- adddel(5)
- planSet(prvni, "faze", 1)
- addv(20, "puc-v-nesmysl")
- prvni.hotovo = 2
- end
- end
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_prvni()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- prvni.hotovo = 0
- prvni.faze = 0
- local Items = {}
- Items[00] = prvni
- Items[01] = puzz02
- Items[02] = puzz03
- Items[03] = puzz04
- Items[04] = puzz05
- Items[05] = puzz06
- Items[06] = puzz07
- Items[07] = puzz08
- Items[08] = puzz09
- Items[09] = puzz10
- Items[10] = puzz11
- Items[11] = puzz12
- Items[12] = puzz13
- Items[13] = puzz14
- Items[14] = puzz15
- Items[15] = puzz16
- Items[16] = puzz17
- Items[17] = puzz18
- Items[18] = puzz19
- Items[19] = puzz20
-
- return function()
- pomb1 = true
- for pom1 = 0, 3 do
- for pom2 = 0, 4 do
- local x_real, x_ideal, y_real, y_ideal
- -- Ideal X position is (xposition in puzzle) * (width of one piece)
- x_ideal = prvni.X + pom1 * 4
- -- Index is pom1 + pom2 * (number of pieces in one row)
- x_real = (Items[pom1 + pom2 * 4]).X
- y_ideal = prvni.Y - pom2 * 4
- y_real = (Items[pom1 + pom2 * 4]).Y
- pomb1 = pomb1 and (x_ideal == x_real) and (y_ideal == y_real)
- end
- end
- if prvni.hotovo == 0 and pomb1 then
- prvni.hotovo = 1
- end
- for pom1 = 0, 19 do
- local puzz_item = Items[pom1]
- puzz_item.afaze = prvni.faze
- puzz_item:updateAnim()
- end
-
- if prvni.faze > 0 and prvni.faze < 4 then
- prvni.faze = prvni.faze + 1
- end
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_pld()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- pld.vlnit = 0
- pld.del = 0
- pld.ocko = 0
- pld.smer = 0
- pld.faze = 0
- pld.smutny = 0
-
- return function()
- switch(pld.dir){
- [dir_no] = function()
- if pld.vlnit == -1 then
- pld.vlnit = 8
- end
- end,
- [dir_down] = function()
- pld.vlnit = -1
- end,
- default = function()
- pld.vlnit = 8
- end,
- }
- if pld.vlnit > 0 then
- pld.smutny = 0
- end
- if pld.vlnit > 0 then
- if pld.del == 0 then
- if (pld.vlnit >= 6) and (pld.vlnit <= 8) then
- pld.del = 1
- elseif (pld.vlnit >= 3) and (pld.vlnit <= 5) then
- pld.del = 2
- else
- pld.del = 3
- end
-
- if random(2) == 0 then
- pld.afaze = math.mod(pld.afaze + 1, 4)
- else
- pld.afaze = math.mod(pld.afaze + 3, 4)
- end
- pld.vlnit = pld.vlnit - 1
- if pld.vlnit == 0 then
- pld.del = 0
- end
- if pld.vlnit == 0 then
- pld.afaze = 0
- elseif pld.vlnit == 1 then
- pld.afaze = 3
- end
- else
- pld.del = pld.del - 1
- end
- elseif pld.smutny > 0 then
- if pld.ocko == 0 then
- if random(100) < 10 then
- pld.ocko = 3
- end
- end
- if pld.ocko > 0 then
- pld.ocko = pld.ocko - 1
- end
- if pld.ocko > 0 then
- pld.afaze = 15
- else
- pld.afaze = 14
- end
- pld.smutny = pld.smutny - 1
- else
- if random(100) < 10 then
- pld.smer = 1 - pld.smer
- end
- if (pld.faze == 0) then
- pld.afaze = 0
- if random(100) < 10 then
- pld.faze = 1
- end
- elseif (pld.faze == 1) or (pld.faze == 4) then
- pld.faze = pld.faze + 1
- pld.afaze = 4
- elseif (pld.faze == 2) or (pld.faze == 3) then
- pld.faze = pld.faze + 1
- pld.afaze = 5
- elseif (pld.faze == 5) then
- pld.afaze = 0
- pld.faze = 0
- end
-
- switch(pld.afaze){
- [0] = function()
- if pld.smer == 1 then
- pld.afaze = 6
- end
- end,
- [4] = function()
- if pld.smer == 1 then
- pld.afaze = 7
- end
- end,
- }
- if pld.ocko == 0 then
- if random(100) < 10 then
- pld.ocko = 3
- end
- end
- if pld.ocko > 0 then
- pld.ocko = pld.ocko - 1
- end
- if pld.ocko > 0 then
- if pld.afaze == 0 then
- pld.afaze = 9
- else
- pld.afaze = pld.afaze + 6
- end
- end
- end
- pld:updateAnim()
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_small()
- return function()
- if room.tahy > 1 and small.dir ~= dir_no and level_isNewRound() then
- room.tahy = room.tahy - 1
- end
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_big()
- return function()
- if room.tahy > 1 and big.dir ~= dir_no and level_isNewRound() then
- room.tahy = room.tahy - 1
- end
- end
- end
-
- -- --------------------
- local update_table = {}
- local subinit
- subinit = prog_init_room()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_prvni()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_pld()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_small()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_big()
- if subinit then
- table.insert(update_table, subinit)
- end
- return update_table
- end
- local update_table = prog_init()
-
-
- -- -----------------------------------------------------------------
- -- Update
- -- -----------------------------------------------------------------
- function prog_update()
- for key, subupdate in pairs(update_table) do
- subupdate()
- end
- end
-
-